home *** CD-ROM | disk | FTP | other *** search
- * MACHINE DEPENDENT ROUTINES FOR KERMIT
- * SET FLAGS 1 FOR DIAGNOSTIC VERSION
- XDEF SYSINI,SYSINIT SYSTEM INITIALIZATION
- XDEF SYSFIN,SYSFIN SYSTEM FINISH UP
- XDEF GETIN,GETIN GET INPUT CHARACTER
- XDEF XMTCHA,XMTCHAR TRANSMIT OUTPUT CHARACTER
- XDEF CONNEC,CONNECT TALK TO REMOTE COMPUTER
- XDEF SLEEP,SLEEP DELAY FOR GIVEN NUMBER OF SECONDS
- XDEF TTYRAW,RAW PUT CONSOLE IN CHARACTER BY CHARACTER I/O
- XDEF TTYCOO,COOKED PUT CONSOLE IN NORMAL MODE
- XDEF FILECR,CREATE CREATE A FILE
- XDEF FLUSH,FLUSH FLUSH OUTPUT BUFFER
- XDEF FIXNAM,FIXNAME REMOVE QUALIFIER FROM FILE NAME
- BUFSIZE EQIV 54 WORDS IN A BUFFER
- SKFZ B1
- COMM /KERMIT/RLCCNT,RLBUF(54),LRCCNT,LRBUF(54)
- * RLCCNT = REMOTE TO LOCAL CHARACTER COUNT
- * RLBUF = REMOTE TO LOCAL BUFFER
- * LRCCNT = LOCAL TO REMOTE CHARACTER COUNT
- * LRBUF = LOCAL TO REMOTE BUFFER
- MCOM KERMIT
- ESKP
- REEN
- SYSINIT TJM RETURN SAVE RETURN ADDRESS
- TNK '0313 OPEN TERMINAL OUPUT
- BLU $I/O
- SKFZ B1
- TNK '0613 OPEN DIAGNOSTIC OUTPUT
- BLU $I/O
- TLO SYSINIC REPORT CALL
- BLJ REPORT
- ESKP
- BUC* RETURN AND RETURN
- SKFZ B1
- PORG *
- SYSINIC DATA '0302
- DAC SYSINIE-SYSINIB
- DAC SYSINIB
- RORG *
- SYSINIB DATA " SYSINIT CALLED"
- SYSINIE EQIV *
- *
- REPORT TJM REPJ SAVE RETURN
- TKM REPK SAVE PARAMETER LIST POINTER
- TOA '0302 SEND TO TERMINAL
- TAM 0,K
- BLU $IOW
- TMK REPK
- TOA '0602 SEND TO LO FILE
- TAM 0,K
- BLU $IOW
- BUC* REPJ
- PORG *
- REPJ DAC *-* RETURN FROM REPORT
- REPK DAC *-* PARAMETER LIST POINTER
- LOCAL DATA 0 0=REMOTE (I.E. HOST), OTHER=LOCAL
- RORG *
- *
- SYSFIN TJM RETURN SAVE RETURN ADDRESS
- TLO SYSFINC REPORT CALL
- BLJ REPORT
- BUC* RETURN AND RETURN
- PORG *
- SYSFINC DATA '0302
- DAC SYSFINE-SYSFINB
- DAC SYSFINB
- SYSFINB DATA " SYSFIN CALLED: "
- SYSFINQ DATA "REMOTE"
- SYSFINE EQIV *
- RORG *
- ELSE
- SYSFIN BJL 0 RETURN AT ONCE--DO NOTHING
- ESKP
- *
- RAW TJM RETURN SAVE RETURN ADDRESS
- SKFZ B1
- TLO RAWC REPORT CALL
- BLJ REPORT
- TZM !RLCCNT WE HAVE NOT YET SENT ANYTHING
- ELSE
- TLO HOTMODE
- BLU $I/O
- ESKP
- BUC* RETURN AND RETURN
- SKFZ B1
- PORG *
- RAWC DATA '0302
- DAC RAWE-RAWB
- DAC RAWB
- RAWB DATA " RAW CALLED: "
- RAWQ DATA "REMOTE"
- RAWE EQIV *
- RORG *
- ELSE
- HOTMODE DATA '0351 HOT MODE INITIALIZE
- DATA BUFSIZE INPUT BUFFER SIZE
- DAC INPUT LOCATION OF INPUT BUFFER
- ESKP
- *
- PORG *
- INPUT BLOK BUFSIZE INPUT BUFFER
- INCNT DATA 0 INPUT CHARACTERS LEFT
- INPLACE BAC INPUT,0 INPUT BUFFER POINTER
- OUTPL DATA '0352 HOT WRITE
- OUTCNT DATA 0 OUTPUT CHARACTER COUNT
- DAC OUTPUT
- OUTPUT BLOK BUFSIZE OUTPUT BUFFER
- OUTPUT2 BLOK BUFSIZE SECOND OUTPUT BUFFER
- IWHICH DATA 0 INDICATES WHICH OUTPUT BUFFER IS USED
- OUTPLCE BAC OUTPUT,0 OUTPUT BUFFER POINTER
- RORG *
- IN1ST BAC INPUT,0 POINTER TO 1ST CHARACTER OF INPUT BUFFER
- OUT1ST BAC OUTPUT,0 POINTER TO 1ST CHARACTER OF OUTPUT BUFFER
- OUT2ND BAC OUTPUT2,0 POINTER TO 1ST CHAR. OF 2ND OUTPUT BUFFER
- *
- COOKED TJM RETURN SAVE RETURN ADDRESS
- SKFZ B1
- TLO COOKEDC REPORT CALL
- BLJ REPORT
- ELSE
- TLO NORMAL RETURN TERMINAL TO NORMAL MODE
- BLU $I/O
- ESKP
- BUC* RETURN AND RETURN
- SKFZ B1
- PORG *
- COOKEDC DATA '0302
- DAC COOKEDE-COOKEDB
- DAC COOKEDB
- COOKEDB DATA " COOKED CALLED: "
- COOKEDQ DATA "REMOTE"
- COOKEDE EQIV *
- RORG *
- ELSE
- NORMAL DATA '0351 NORMAL MODE PLEASE
- DATA -1
- DATA 0
- ESKP
- *
- GETIN EQIV *
- GAP 1 GET ADDRESS OF TIME-OUT COUNT
- TIM TIMEOUT
- GAP 1 GET ADDRESS FOR CHARACTER FROM CONSOLE
- TIM CONSOLE
- TJM RETURN SAVE RETURN ADDRESS
- BLJ FLUSH FLUSH OUTPUT BUFFER
- TMA INCNT ANY INPUT CHARACTERS LEFT FROM BEFORE?
- BOP GETIN2 YES--BRANCH
- TMA IN1ST REWIND BUFFER POINTER
- TAM INPLACE
- GETIN0 TNA 10 FOR 1 SECOND COUNT DOWN
- TAM COUNTDN
- GETIN1 EQIV *
- SKFZ B1
- TMI M.LRCNT USE THIS IF WE ARE REMOTE
- CZM LOCAL
- BOZ *+2
- TMI =RLCCNT USE THIS IF WE ARE LOCAL
- TMA !0,I GET CHARACTER COUNT
- TNK BUFSIZE AND COPY THE BUFFER
- TME !1,I
- TEM INPUT+BUFSIZE,K
- AOI 1
- BWK *-3
- SOI BUFSIZE RESTORE I
- CZA DID WE GET ANY CHARACTERS?
- BNP *+2 NO--BRANCH
- TZM !0,I YES--BUFFER IS NOW FREE
- ELSE
- TNK '0353 CHECK IF WE HAVE INPUT
- BLU $I/O
- ESKP
- CZA DID WE GET ANY CHARACTERS?
- BOP GETIN2 YES--BRANCH
- TOK 12 WAIT A 0.1 SECONDS
- BLU $DELAY
- AUM COUNTDN
- BON GETIN1 BRANCH IF A SECOND HASN'T PASSED YET
- AOM -1 DECREMENT TIME OUT WORD
- DAC* TIMEOUT
- BOP GETIN0 BRANCH IF WE HAVEN'T TIMED OUT YET
- TZA RETURN A NULL
- BUC GETIN3
- GETIN2 SOA 1 DECREMENT CHARACTERS LEFT
- TAM INCNT
- TMJ INPLACE INPUT BUFFER CHARACTER POINTER
- EMB !0 GET THE CHARACTER
- EZB
- BBJ *+1 INCREMENT CHARACTER POINTER
- TJM INPLACE
- GETIN3 EQIV *
- SKFZ B1
- TAM GETINSV SAVE THE CHARACTER
- BLU $OCTASC CONVERT FOR REPORT
- TKM GETINV
- TDM GETINV+1
- TOA '177
- TMA GETINSV GET CHARACTER AGAIN
- COB " " IS IT A PRINTABLE CHARACTER?
- BNN *+2 YES--BRANCH
- TOB "?" NO--USE A QUESTION MARK
- TBM GETINX STORE IN MESSAGE
- TLO GETINC REPORT CALL
- BLJ REPORT
- TMA GETINSV RESTORE THE CHARACTER
- ESKP
- BUC* RETURN AND RETURN
- PORG *
- TIMEOUT DAC *-* ADDRESS OF TIME-OUT WORD
- CONSOLE DAC *-* PLACE TO STORE CHARACTER FROM CONSOLE
- COUNTDN DATA 0 COUNT DOWN FOR FULL SECOND
- SKFZ B1
- GETINSV DATA 0
- GETINC DATA '0302
- DAC GETINE-GETINB
- DAC GETINB
- GETINB DATA " GETIN CALLED:"
- GETINV BLOK 3
- GETINX DATA " '?' "
- GETINQ DATA "REMOTE"
- GETINE EQIV *
- ESKP
- RORG *
- *
- XMTCHAR TJM RETURN SAVE RETURN ADDRESS
- TMA* !0,J
- TMI OUTPLCE
- RBM !0 STORE IT IN OUTPUT BUFFER
- BBI *+1 ADVANCE BUFFER POINTER
- TIM OUTPLCE
- TMA OUTCNT INCREMENT CHARACTER COUNT
- AOA 1
- TAM OUTCNT
- SOA 3*BUFSIZE IS THE BUFFER FULL?
- BON *+2 NO--BRANCH
- BLJ FLUSH YES--WRITE IT OUT
- SKFZ B1
- TMJ RETURN GET THE CHARACTER AGAIN
- TMA* !0,J
- BLU $OCTASC
- TKM XMTCHAV
- TDM XMTCHAV+1
- TMJ RETURN GET VALUE AGAIN
- TOA '177
- DMA* !0,J
- COB " " IS IT A PRINTABLE CHARACTER?
- BNN *+2 YES--BRANCH
- TOB "?" NO--USE A QUESTION MARK
- TBM XMTCHAX STORE IN MESSAGE
- TLO XMTCHAC REPORT CALL
- BLJ REPORT
- ESKP
- TMJ RETURN
- BJL 1 AND RETURN
- PORG *
- SKFZ B1
- XMTCHAC DATA '0302
- DAC XMTCHAE-XMTCHAB
- DAC XMTCHAB
- XMTCHAB DATA " XMTCHAR CALLED:"
- XMTCHAV BLOK 3
- XMTCHAX DATA " '?' "
- XMTCHAQ DATA "REMOTE"
- XMTCHAE EQIV *
- ESKP
- RETURN BLOK 1
- RORG *
- *
- FLUSH TJM FLUSHRT SAVE RETURN ADDRESS
- TMA OUTCNT ANY CHARACTER IN THE BUFFER?
- BNP FLUSHEX NO--BRANCH
- SKFZ B1
- FLUSH2 TMI =RLCCNT USE IF REMOTE
- CZM LOCAL
- BOZ *+2
- TMI M.LRCNT USE THIS IF LOCAL
- CZM !0,I IS THE BUFFER AVAILABLE
- BNP FLUSH3 YES--BRANCH
- TOK 12 NO--WAIT 0.1 SECONDS
- BLU $DELAY
- BUC FLUSH2 AND TRY AGAIN
- FLUSH3 EQIV *
- TMJ M.LRCNT INPUT BUFFER IF REMOTE
- CZM LOCAL
- BOZ *+2
- TMJ =RLCCNT INPUT BUFFER IF LOCAL
- TZM !0,J IGNORE RESPONSE TO PREVIOUS MESSAGE
- TNK BUFSIZE COPY THE OUTPUT BUFFER
- TMJ OUTPL+2
- TMA !0,J
- TAM !1,I
- AOI 1
- AOJ 1
- BWK *-4
- SOI BUFSIZE RESTORE I
- TMA OUTCNT GET OUTPUT COUNT
- TAM !0,I AND STORE IN BUFFER
- ELSE
- TNK '0353 IGNORE RESPONSE (IF ANY) TO PREVIOUS MESSAGE
- BLU $I/O
- TLO OUTPL WRITE THE BUFFER
- BLU $I/O
- ESKP
- TZM OUTCNT NO CHARACTERS IN BUFFER NOW
- TOA IWHICH NOW WHICH BUFFER SHOULD WE USE?
- AOA 1
- TAM IWHICH
- TME OUT1ST USE IF 1ST BUFFER
- TLO OUTPUT 1ST BUFFER ADDRESS
- QBB B0 IS IWHICH ODD?
- BOZ *+3 NO--BRANCH
- TME OUT2ND USE IF 2ND BUFFER
- TLO OUTPUT2
- TEM OUTPLCE BUFFER FILL LOCATION
- TKM OUTPL+2 BUFFER ADDRESS FOR WRITE
- FLUSHEX BUC* FLUSHRT AND RETURN
- FLUSHRT PBLOK 1 RETURN ADDRESS
- TSFZ B1
- M.LRCNT LAC RLCCNT+BUFSIZE+1 ADDRESS OF LOCAL TO REMOTE
- *
- SLEEP GAP 1
- TMA !0,I GET NUMBER OF SECONDS
- TJM RETURN
- SKFZ B1
- TAM SECONDS
- BLU $OCTASC
- TKM SLEEPV
- TDM SLEEPV+1
- TLO SLEEPC
- BLJ REPORT
- TMA SECONDS
- ESKP
- MYO 120 120 TICKS PER SECOND
- TAK
- BLU $DELAY
- BUC* RETURN
- SKFZ B1
- PORG *
- SECONDS DATA 0
- SLEEPC DATA '0302
- DAC SLEEPE-SLEEPB
- DAC SLEEPB
- SLEEPB DATA " SLEEP CALLED: "
- SLEEPV BLOK 3
- DATA " "
- SLEEPQ DATA "REMOTE"
- SLEEPE EQIV *
- RORG *
- ESKP
- *
- CREATE GAP 1
- TIM SCINITL+1 TO INITIALIZE THE SCANNER
- TJM RETURN
- TLO SCINITL
- BLU $SCINIT
- TLO GENLIST GET AREANAME FOR GENERATE
- BLU $AREANM
- BON CREATE2 BRANCH IF TROUBLE
- TLO GENLIST
- BLU $GENERATE CREATE THE FILE
- CREATE2 EQIV *
- SKFZ B1
- TLO CREATEC REPORT THE CALL
- BLJ REPORT
- ESKP
- BUC* RETURN
- PORG *
- SCINITL DATA 6 WORD COUNT
- DAC *-* BUFFER ADDRESS
- GENLIST BLOK 4 AREA NAME
- DATA 0 GRANUAL SIZE
- DATA 0 MAXIMUM SIZE
- DATA 0 PACK NUMBER
- DATA '10000000 BLOCKED FILE
- DATA 0 PURGE DATE
- DATA 0 BLOCKING FACTOR
- DATA 0 SPOOL PDN
- DATA 3 OWNER WRITE, OWNER DELETE
- DATA 0 ACCESS LEVEL
- DATA 0 FORCED STARTING SECTOR
- BLOK 4 M/TYP#
- SKFZ B1
- CREATEC DATA '0302
- DAC CREATEE-CREATEB
- DAC CREATEB
- CREATEB DATA " CREATE CALLED: "
- CREATEQ DATA "REMOTE"
- CREATEE EQIV *
- ESKP
- RORG *
- *
- CONNECT EQIV *
- SKFZ B1
- GAP 1 ADDRESS OF DUPLEX WORD
- TJM RETURN SAVE RETURN ADDRESS
- TMA !0,I
- BLU $OCTASC
- TKM CONNECV
- TDM CONNECV+1
- TFM LOCAL 0=REMOTE (I.E. HOST), OTHER=LOCAL
- TMD ="LOCAL "
- TDM SYSFINQ
- TDM GETINQ
- TDM SLEEPQ
- TDM XMTCHAQ
- TDM RAWQ
- TDM COOKEDQ
- TDM CREATEQ
- TLO CONNECC REPORT CALL
- BLJ REPORT
- TZM* M.LRCNT WE HAVE NOT YET SENT ANYTHING
- TOA 1 RETURN TRUE
- BUC* RETURN AND RETURN
- PORG *
- CONNECC DATA '0302
- DAC CONNECE-CONNECB
- DAC CONNECB
- CONNECB DATA " CONNECT CALLED: "
- CONNECV BLOK 3
- CONNECE EQIV *
- RORG *
- ESKP
- TZA NO CONNECTION IS POSSIBLE
- BJL 1 RETURN--BRANCH OVER ARGUMENT
- *
- FIXNAME GAP 1 REMOVE ANY GIVEN QUALIFIER
- TJM RETURN
- TIJ
- TNK 20
- FIXNAML TMA !0,J GET NEXT CHARACTER
- BOZ FIXNAMR RETURN AT END-OF-STRING
- AOJ 1
- COB "*" IS THIS AN ASTERISK
- BOZ FIXNAMC YES--BRANCH
- BWK FIXNAML LOOP FOR A WHILE
- FIXNAMR BUC* RETURN DO NOTHING--RETURN
- FIXNAMC TNK 20 COPY FILE NAME DOWN
- TMA !0,J
- TAM !0,I
- AOI 1
- AOJ 1
- BWK *-4
- BUC* RETURN AND RETURN
- *
- END$
-